import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:3001', // json-server的默认地址
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 从localStorage中获取token
    const token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    console.error('API请求错误:', error)
    return Promise.reject(error)
  }
)

// 用户相关API
export const userAPI = {
  // 登录
  login(username, password) {
    return api.get('/users', {
      params: { username, password }
    })
  },
  
  // 注册
  register(userData) {
    return api.post('/users', userData)
  },
  
  // 获取用户信息
  getUserInfo(userId) {
    return api.get(`/users/${userId}`)
  },
  
  // 更新用户信息
  updateUserInfo(userId, userData) {
    return api.put(`/users/${userId}`, userData)
  }
}

// 视频相关API
export const videoAPI = {
  // 获取视频列表
  getVideos(params = {}) {
    return api.get('/videos', { params })
  },
  
  // 获取视频详情
  getVideoDetail(videoId) {
    return api.get(`/videos/${videoId}`)
  },
  
  // 获取视频类型
  getVideoTypes() {
    return api.get('/videoTypes')
  },
  
  // 获取视频分类
  getVideoCategories() {
    return api.get('/videoCategories')
  },
  
  // 获取视频评论
  getVideoComments(videoId) {
    return api.get('/comments', {
      params: { video_id: videoId }
    })
  },
  
  // 获取视频弹幕
  getVideoDanmakus(videoId) {
    return api.get('/danmakus', {
      params: { video_id: videoId }
    })
  },
  
  // 添加评论
  addComment(commentData) {
    return api.post('/comments', commentData)
  },
  
  // 添加弹幕
  addDanmaku(danmakuData) {
    return api.post('/danmakus', danmakuData)
  }
}

// 用户交互相关API
export const interactionAPI = {
  // 点赞视频
  likeVideo(user_id, video_id) {
    return api.post('/userLikeVideos', { user_id, video_id })
  },
  
  // 取消点赞
  unlikeVideo(relationId) {
    return api.delete(`/userLikeVideos/${relationId}`)
  },
  
  // 收藏视频
  collectVideo(user_id, video_id) {
    return api.post('/userCollectVideos', { user_id, video_id })
  },
  
  // 取消收藏
  uncollectVideo(relationId) {
    return api.delete(`/userCollectVideos/${relationId}`)
  },
  
  // 投币
  coinVideo(user_id, video_id, coin_value) {
    return api.post('/userCoinVideos', { user_id, video_id, coin_value })
  },
  
  // 获取用户点赞列表
  getUserLikes(userId) {
    return api.get('/userLikeVideos', {
      params: { user_id: userId }
    })
  },
  
  // 获取用户收藏列表
  getUserCollections(userId) {
    return api.get('/userCollectVideos', {
      params: { user_id: userId }
    })
  },
  
  // 获取用户评论列表
  getUserComments(userId) {
    return api.get('/comments', {
      params: { user_id: userId }
    })
  }
}

export default api